#include <stdio.h>
typedef struct __st_aml_block_header{
    //16
    unsigned int   dwMagic;       //"@AML"
    unsigned int   nTotalSize;    //total size: sizeof(hdr)+
                                  //  nSigLen + nDataLen
    unsigned char  bySizeHdr;     //sizeof(st_aml_block)
    unsigned char  byRootKeyIndex;//root key index; only romcode
                                  //  will use it, others just skip
    unsigned char  byVerMajor;    //major version
    unsigned char  byVerMinor;    //minor version

    unsigned char  szPadding1[4]; //padding???

    //16+16
    unsigned int   nSigType;      //e_aml_sig_type : AML_SIG_TYPE_NONE...
    unsigned int   nSigOffset;    //sig data offset, include header
    unsigned int   nSigLen;       //sig data length
    //unsigned char  szPadding2[4]; //padding???
    unsigned int   nCHKStart;     //begin to be protected with SHA2

    //32+16
    unsigned int   nPUKType;     //e_aml_data_type : AML_DATA_TYPE_PROGRAM
    unsigned int   nPUKOffset;   //raw data offset, include header
    unsigned int   nPUKDataLen;  //raw data length
    //unsigned char  szPadding4[4]; //padding???
    unsigned int   nCHKSize;     //size to be protected with SHA2

    //48+16
    unsigned int   nDataType;     //e_aml_data_type : AML_DATA_TYPE_PROGRAM
    unsigned int   nDataOffset;   //raw data offset, include header
    unsigned int   nDataLen;      //raw data length
    unsigned char  szPadding3[4]; //padding???

    //64
} st_aml_block_header;
st_aml_block_header * p;

st_aml_block_header main(int argc, char** argv) {
    st_aml_block_header blkheader;
    return blkheader;
    //~ printf("Hello %s! (via printf)\n", "world");
    //~ fprintf(stdout, "%s world%c (via fprintf)\n", "Hello", '!');

    //~ printf("expr1 = %i\n", -1);
    //~ printf("expr2 = %i\n", 1 > -1);

    //~ {
        //~ int i;
        //~ for(i = 0; i < 10; ++i)
            //~ printf("count1: %i\n", i);
    //~ }

    //~ {
        //~ int i = -1;
        //~ while(++i < 10)
            //~ printf("count2: %i\n", i);
    //~ }

    //~ {
        //~ int i = 0;
        //~ do {
            //~ printf("count3: %i\n", i++);
        //~ } while(i < 10);
    //~ }

    //~ {
        //~ int i = 0;
        //~ int y = 0;
        //~ y = (y ? i + 1 : 0);
        //~ y = (argv[i+1] != 0 ? i+1 : 0);
        //~ y = (argv[i+1] != NULL ? i+1 : 0);
    //~ }

    return 0;
}

